Machine learning, a branch of artificial intelligence,  is a scientific discipline concerned with the design 
and development of algorithms that allow computers to evolve behaviors based on empirical data, such as from 
sensor data or databases. A learner can take advantage of examples (data) to capture characteristics of interest 
of their unknown underlying probability distribution. Data can be seen as examples that illustrate relations 
between observed variables. A major focus of machine learning research is to automatically learn to recognize 
complex patterns and make intelligent decisions based on data; the difficulty lies in the fact that the set of 
all possible behaviors given all possible inputs is too large to be covered by the set of observed examples 
(training data). Hence the learner must generalize from the given examples, so as to be able to produce a useful 
output in new cases.
Tom M. Mitchell provided a widely quoted definition: A computer program is said to learn  from experience E with 
respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, 
improves with experience E.
The core objective of a learner is to generalize from its experience.
The training examples from its experience come from some generally unknown probability distribution and the 
learner has to extract from them something more general, something about that distribution, that allows it 
to produce useful answers in new cases.
Some machine learning systems attempt to eliminate the need for human intuition in data analysis, while others 
adopt a collaborative approach between human and machine. Human intuition cannot, however, be entirely eliminated, 
since the system's designer must specify how the data is to be represented and what mechanisms will be used to 
search for a characterization of the data.
Machine learning algorithms can be organized into a taxonomy based on the desired outcome of the algorithm.
Supervised learning generates a function that maps inputs to desired outputs (also called labels, because they 
are often provided by human experts labeling the training examples). For example, in a classification problem, 
the learner approximates a function mapping a vector into classes by looking at input-output examples of the 
function. Unsupervised learning models a set of inputs, like clustering. Semi-supervised learning combines both 
labeled and unlabeled examples to generate an appropriate function or classifier. Reinforcement learning learns 
how to act given an observation of the world. Every action has some impact in the environment, and the environment 
provides feedback in the form of rewards that guides the learning algorithm. 
Transduction tries to predict new outputs based on training inputs, training outputs, and test inputs. Learning to
 learn learns its own inductive bias based on previous experience.

The computational analysis of machine learning algorithms and their performance is a branch of theoretical computer 
science known as computational learning theory. Because training sets are finite and the future is uncertain, 
learning theory usually does not yield absolute guarantees of the performance of algorithms. Instead, probabilistic 
bounds on the performance are quite common.
In addition to performance bounds, computational learning theorists study the time complexity and feasibility of 
learning. In computational learning theory, a computation is considered feasible if it can be done in polynomial 
time. There are two kinds of time complexity results. Positive results show that a certain class of functions can 
be learned in polynomial time. Negative results show that certain classes cannot be learned in polynomial time.
There are many similarities between machine learning theory and statistics, although they use different terms.

Decision tree learning uses a decision tree as a predictive model which maps observations 
about an item to conclusions about the item's target value.
Association rule learning is a method for discovering interesting relations between variables in large databases.
An artificial neural network (ANN) learning algorithm, usually called "neural network" (NN), is a learning 
algorithm that is inspired by the structure and/or functional aspects of biological neural networks. 
Computations are structured in terms of an interconnected group of artificial neurons, processing information 
using a connectionist approach to computation. Modern neural networks are non-linear statistical data modeling 
tools. They are usually used to model complex relationships between inputs and outputs, to find patterns in data, 
or to capture the statistical structure in an unknown joint probability distribution between observed variables.
Genetic programming (GP) is an evolutionary algorithm-based methodology inspired by biological evolution to find 
computer programs that perform a user-defined task. It is a specialization of genetic algorithms (GA) where each 
individual is a computer program. It is a machine learning technique used to optimize a population of computer 
programs according to a fitness landscape determined by a program's ability to perform a given computational task.
Inductive logic programming (ILP) is an approach to rule learning using logic programming as a uniform 
representation for examples, background knowledge, and hypotheses. Given an encoding of the known background 
knowledge and a set of examples represented as a logical database of facts, an ILP system will derive a 
hypothesized logic program which entails all the positive and none of the negative examples.
Support vector machines (SVMs) are a set of related supervised learning methods used for classification 
and regression. Given a set of training examples, each marked as belonging to one of two categories, an 
SVM training algorithm builds a model that predicts whether a new example falls into one category or the other.
Cluster analysis or clustering is the assignment of a set of observations into subsets (called clusters) so that 
observations in the same cluster are similar in some sense. Clustering is a method of unsupervised learning, and 
a common technique for statistical data analysis.
A Bayesian network, belief network or directed acyclic graphical model is a probabilistic graphical model that 
represents a set of random variables and their conditional independencies via a directed acyclic graph (DAG). 
For example, a Bayesian network could represent the probabilistic relationships between diseases and symptoms. 
Given symptoms, the network can be used to compute the probabilities of the presence of various diseases. 
Efficient algorithms exist that perform inference and learning.
Reinforcement learning is concerned with how an agent ought to take actions in an environment so as to maximize 
some notion of long-term reward. Reinforcement learning algorithms attempt to find a policy that maps states of 
the world to the actions the agent ought to take in those states. Reinforcement learning differs from the 
supervised learning problem in that correct input/output pairs are never presented, nor sub-optimal actions 
explicitly corrected.
Several learning algorithms, mostly unsupervised learning algorithms, aim at discovering better representations 
of the inputs provided during training. Classical examples include principal components analysis and clustering. 
Representation learning algorithms often attempt to preserve the information in their input but transform it in 
a way that makes it useful, often as a pre-processing step before performing classification or predictions, 
allowing to reconstruct the inputs coming from the unknown data generating distribution, while not being 
necessarily faithful for input configurations that are implausible under that distribution. 
Manifold learning algorithms attempt to do so under the constraint that the learned representation is 
low-dimensional. Sparse coding algorithms attempt to do so under the constraint that the learned representation 
is sparse (has many zeros). Deep learning algorithms discover multiple levels of representation, or a hierarchy 
of features, with higher-level, more abstract features defined in terms of (or generating) lower-level features. 
It has been argued that an ideal representation is one that disentangles the underlying factors of variation that 
explain the observed data.
Applications for machine learning include: machine perception, computer vision, natural language processing,
 syntactic pattern recognition, search engines, medical diagnosis, bioinformatics, brain-machine interfaces,
 cheminformatics, Detecting credit card fraud, stock market analysis, Classifying DNA sequences,
  speech and handwriting recognition, object recognition in computer vision, game playing, software engineering,
  adaptive websites, robot, locomotion, structural health monitoring and Sentiment Analysis (or Opinion Mining).
In 2006, the on-line movie company Netflix held the first "Netflix Prize" competition to find a program to 
better predict user preferences and beat its existing Netflix movie recommendation system by at least 10%. 
The AT&T Research Team BellKor beat out several other teams with their machine learning program "Pragmatic Chaos". 
After winning several minor prizes, it won the grand prize competition in 2009 for $1 million.
RapidMiner, KNIME, Weka, ODM, Shogun toolbox, Orange, Apache Mahout and MCMLL are software suites containing a 
variety of machine learning algorithms.
